import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from "@angular/router";
import { Product } from "../product/product.component";
import { Observable } from "rxjs";
import { Injectable } from "@angular/core";

@Injectable()//必须用这个装饰，才可以使用引进来的Router。借用来导航路由用的。现在constructor中引用一下。下面的才可以用。
export class ProductResolve implements Resolve<Product> {
    constructor(private router:Router) {

    }
    //这里是resolve的方法。里面的参数是用来接受传进来的信息的。
    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Product>|Promise<Product>|Product {

        let productId: number = route.params["id"];

        if(productId == 1) {
            return new Product(55555, "iphone8")   //这边返回的数据。在那边使用data来接受的。
        }else {
            this.router.navigate(['/home']);
            return undefined;
        }

        
    }
}